# demo01_mysql.py
# 编辑器中存在环境，默认使用的全局环境
# 每个学员的电脑上，都已经安装了所需要的包
# 实际上每个项目都应该有自己的虚拟环境，需要手动切换到这个虚拟环境

# 导入mysql驱动
import pymysql
# 创建数据库的连接，提供相关信息
conn = pymysql.connect(
    host='192.168.88.128',
    port=3306,
    user='root',
    password='123456',
    db='tedu',  # 连接后要使用的数据库
    charset='utf8'
)
# 游标：用于操作数据库
# 创建游标
cur = conn.cursor()
"""
# 创建数据表
create_table = '''
    create table dept(
        id int,
        dname varchar(16)
    )
'''
# 执行SQL命令
cur.execute(create_table)

# 1.插入数据
# insert_sql = 'insert into dept values(1, "研发部")'
# cur.execute(insert_sql)
# 使用sql命令模板
# 替换的部分使用占位符
insert_sql = 'insert into dept values(%s, %s)'
# 执行sql命令，提供的一组值，使用元组格式
# cur.execute(insert_sql, (2, '运维部'))
# 执行多次命令，提供多组值
cur.executemany(insert_sql, [
    (3, '测试部'),
    (4, '设计部'),
    (5, '运营部')
])

# 2.查询数据
select_sql = 'select * from dept'
cur.execute(select_sql)
# 单独取数据
print(cur.fetchone())  # 获取一条
print(cur.fetchmany(2)) # 获取多条
print(cur.fetchall())  # 获取所有
# 3.修改数据
update_sql = 'update dept set dname=%s where id=%s'
# cur.execute(update_sql, ('市场部', 1))
cur.executemany(update_sql, [
    ('人力部', 2),
    ('财务部', 3)
])
"""
# 4.删除
delete_sql = 'delete from dept where id=%s'
# cur.execute(delete_sql, (2, ))
cur.executemany(delete_sql, [(1, ), (4, )])
# 如果有数据的变化，必须提交事务
conn.commit()
# 关闭游标
cur.close()
# 关闭数据库连接
conn.close()